package com.youtills.core.email;

import javax.mail.Address;
import javax.mail.internet.AddressException;
import javax.mail.internet.InternetAddress;
import java.io.File;
import java.util.List;

/**
 * Created by IntelliJ IDEA.
 * User: ravi
 * Date: 8/11/12
 * Time: 12:56 PM
 * To change this template use File | Settings | File Templates.
 */
public interface IEmailMessage {


    /**
     * attachments. List of files
     *
     * @return  list of files
     */
    List<File> getAttachments();

    /**
     * Gives you an array of Bcc addresses.
     *
     * @return  array of bcc addresses
     */
    Address[] getBccArray();

    /**
     * Returns an unmodifiable list of bcc addresses.
     *
     * @return  List of addresses
     */
    List<Address> getBcc();

    /**
     * gives you mail body/content.
     *
     * @return  mail content
     */
    String getBody();

    /**
     * Gives you an array of cc addresses.
     *
     * @return  cc addresses array
     */
    Address[] getCcArray();

    /**
     * Returns an unmodifiable list of cc addresses.
     *
     * @return  List of addresses.
     */
    List<Address> getCc();

    /**
     * Gives you an array of from addresses.
     *
     * @return  array of from addresses
     */
    Address[] getFromArray();

    /**
     * Returns an unmodifiable list of from addresses.
     *
     * @return  List of addresses.
     */
    List<Address> getFrom();


    /**
     * Gives you an array of reply to addresses
     *
     * @return  array of replyTo addresses
     */
    Address[] getReplyToArray();

    /**
     * Returns an unmodifiable list of replyto addresses.
     *
     * @return  list of addresses.
     */
    List<Address> getReplyTo();

    /**
     * Gets mail subject
     *
     * @return  mail subject
     */
    String getSubject();

    /**
     * Gives you an array of To addresses.
     *
     * @return  to addresses
     */
    Address[] getToArray();

    /**
     * Returns an unmodifiable list of to addresses.
     *
     * @return  List of addresses.
     */
    List<Address> getTo();

    /**
     * Tells you whether the mail is an HTML mail or not.
     *
     * @return  boolean
     */
    boolean isHtml();

    /**
     * Get the return path address that will be used in the MAIL FROM.
     *
	 * @return the returnPath
	 */
	String getReturnPath();
}